#ifndef LOGHELPER_H
#define LOGHELPER_H

#include <QObject>
#include <QMessageLogContext>
#include <QTimer>
#include <QMutex>
#include <QFile>
#include <QTextStream>
#include <QDateTime>

void MessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    Q_UNUSED(context);

    // 加锁
    static QMutex mutex;
    mutex.lock();

    QByteArray localMsg = msg.toLocal8Bit();

    QString strMsg("");

    switch(type)
    {
    case QtDebugMsg:
        strMsg = QString("Debug:");
        break;
    case QtWarningMsg:
    case QtCriticalMsg:
    case QtFatalMsg:
    default:
        break;
    }

    // 设置输出信息格式
    QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    //QString strMessage = QString("[Time:%1] [Msg:%2] [Func:%3]").arg(strDateTime).arg(localMsg.constData()).arg(context.function);
    QString strMessage = QString("%1 Msg: %2").arg(strDateTime).arg(localMsg.constData());

    // 输出信息至文件中（读写、追加形式）
    QFile file("log.txt");
    file.open(QIODevice::ReadWrite | QIODevice::Append);
    QTextStream stream(&file);
    stream << strMessage << "\r\n";
    file.flush();
    file.close();

    // 解锁
    mutex.unlock();
}

#endif // LOGHELPER_H
